100 ! TI MISSILE COMMAND
110 ! BY JOHN BEHNKE XBASIC
120 CALL CLEAR :: CALL SCREEN(2) :: FOR I=3 TO 14 :: CALL COLOR(I,16,1) :: NEXT I
130 CALL COLOR(2,7,1)
140 RANDOMIZE
150 CITYNUM=6 :: MNUM=30 :: W=1 :: HIGH=2000
160 FOR I=1 TO 7
170 READ B(I)
180 NEXT I
190 DATA 32,64,96,128,160,192,224
200 FOR I=1 TO 10 :: READ CO(I) :: NEXT I
210 DATA 9,3,6,8,11,14,7,4,15,10
220 CALL CHAR(40,"FFFFFFFFFFFFFFFF80C0E0F0F8FCFEFFFF7F3F1F0F0703010103070F1F3F7FFF")
230 CALL CHAR(44,"FFFEFCF8F0E0C080")
240 DISPLAY AT(4,1):"()+( ((( +(( +(( ((( (   ((((*,(  (  (   (    (  (   (  (  (  (  *() *()  (  (   (( (  (  (    (   (  (  (   ("
250 DISPLAY AT(8,1):"(  ( ((( ((, ((, ((( ((( ((("
260 DISPLAY AT(10,1):"+(( +() ()+( ()+( +() ( ( (((   ( ( (*,( (*,( ( ( ()( ( (   ( ( (  ( (  ( ((( (*( ("
270 DISPLAY AT(13,1):"(   ( ( (  ( (  ( ( ( ( ( ( *(( *(, (  ( (  ( ( ( ( ( (("
280 CALL HCHAR(10,31,41) :: CALL VCHAR(11,31,40,3) :: CALL HCHAR(14,31,44)
290 DISPLAY AT(22,1):"      1985 JB FREEWARE"
300 FOR I=1 TO 400 :: NEXT I
310 CALL CHAR(96,"0003070F1F3F7FFF00C0E0F0F8FCFEFFFFFFFFFFFFFFFFFF")
320 CALL CHAR(99,"1038101010383828000000004454DEFF")
330 CALL CHAR(104,"30303636F7F7FFFFC0C0E0ECECECFFFF")
340 CALL CHAR(132,"0000000000010307070301",134,"000000000080C0E0E0C08")
350 CALL CHAR(136,"000000070F1F1F1F1F1F1F0F07000000000000E0F0F8F8F8F8F8F8F0E0")
360 CALL CHAR(140,"1F3F7FFFFFFFFFFFFFFFFFFFFF7F3F1FF8FCFEFFFFFFFFFFFFFFFFFFFFFEFCF8")
370 CALL CHAR(128,"60F0F060"&RPT$("0",56))
380 CALL CHAR(124,"8850205088"&RPT$("0",54))
390 CALL CHAR(101,"00000000030F3FFF00000000C0F0FCFF")
400 CALL MAGNIFY(3)
410 CALL CHAR(112,RPT$("0",18)&"07070707070707"&RPT$("0",18)&"E0E0E0E0E0E0E0")
420 CALL CHAR(116,"000003070F1F1F0707070707070707070000C0E0F0F8F8E0E0E0E0E0E0E0E0E0")
430 CALL CHAR(120,"0F3F7FFFFFFFFFF76707070707070707F0F8FCFEFFFFFFFFEFE0E0E0E0E0E0E0")
440 CALL COLOR(10,5,1)
450 CALL CLEAR
460 CALL HCHAR(22,2,101) :: DISPLAY AT(22,1):"fhiefhiefhief`aefhiefhiefhie" :: CALL HCHAR(22,31,102)
470 CALL HCHAR(23,1,98,64)
480 CALL SPRITE(#1,124,16,100,100)
490 WAVE=WAVE+1 :: MNUM=30
500 COLL=COLL+1 :: IF COLL=11 THEN COLL=1
510 CALL COLOR(9,CO(COLL),1)
520 DISPLAY AT(23,14)SIZE(2):USING "##":MNUM
530 DISPLAY AT(4,1):"    WAVE # ";WAVE;" INCOMING"
540 !
550 FOR J=1 TO 5 :: FOR I=8 TO 2 STEP-1 :: CALL SOUND(-100,110+I*20,0) :: NEXT I :: NEXT J
560 DISPLAY AT(4,1):""
570 GOSUB 1190
580 FOR L=5 TO 9 :: CALL JOYST(1,X,Y) :: CALL MOTION(#1,-Y*3,X*3)
590 CALL KEY(1,K,S)
600 CALL POSITION(#L,XX,YY)
610 IF XX>164 AND XX<215 THEN 1310
620 IF S=0 OR MNUM=0 THEN 820
630 MNUM=MNUM-1 :: DISPLAY AT(23,14)SIZE(2):USING "##":MNUM :: CALL POSITION(#1,R,C)
640 IF R<10 OR R>160 OR C<1 OR C>248 THEN 820
650 CALL SPRITE(#2,128,16,168,127,#4,124,15,R,C)
660 CALL SOUND(500,-5,0)
670 CALL MOTION(#2,(R-168)*.2,(C-127)*.2)
680 FOR I=1 TO 16
690 CALL JOYST(1,X,Y) :: CALL MOTION(#1,-Y*3,X*3)
700 NEXT I
710 CALL DELSPRITE(#2,#4)
720 CALL SOUND(500,-7,0) :: FOR I=132 TO 140 STEP 4
730 CALL SPRITE(#3,I,16,R-6,C-6)
740 NEXT I
750 FOR I=5 TO 10 :: CALL COINC(#I,#3,12,HIT) :: IF HIT THEN GOSUB 1270
760 NEXT I
770 FOR I=136 TO 132 STEP-4
780 CALL SOUND(-100,-7,0)
790 CALL SPRITE(#3,I,16,R-6,C-6)
800 NEXT I
810 CALL DELSPRITE(#3)
820 NEXT L
830 IF M>0 THEN 580 ELSE IF WAVE>2 AND W>0 THEN 570
840 W=INT(WAVE/2) :: IF W>4 THEN W=4
850 CALL DELSPRITE(ALL)
860 FOR I=1 TO MNUM
870 CALL SOUND(10,110,0,-2,0)
880 CALL HCHAR(10,I+2,99)
890 SC=SC+5 :: DISPLAY AT(18,10):"SCORE ";SC :: DISPLAY AT(23,14)SIZE(2):USING "##":MNUM-I
900 NEXT I
910 FOR I=1 TO CITYNUM
920 CALL SOUND(50,110,0)
930 CALL HCHAR(14,I*2+10,100)
940 SC=SC+100 :: DISPLAY AT(18,10):"SCORE ";SC
950 NEXT I :: DISPLAY AT(18,10):"SCORE ";SC
960 IF SC>HIGH THEN HIGH=HIGH+2000 :: NEWCITY=NEWCITY+1
970 IF NEWCITY>0 AND CITYNUM<6 THEN 1480
980 FOR I=1 TO 500 :: NEXT I
990 CALL HCHAR(1,1,32,672)
1000 IF CITYNUM>0 THEN 480
1010 CALL DELSPRITE(ALL) :: FOR I=30 TO 1 STEP-1
1020 CALL SOUND(-500,-5,I)
1030 FOR J=1 TO 15 :: NEXT J
1040 NEXT I
1050 CALL VCHAR(1,31,40,96)
1060 FOR I=1 TO 24
1070 CALL SCREEN(7)
1080 CALL SOUND(-1000,-7,0)
1090 READ AA$
1100 DISPLAY AT(I,1):AA$
1110 CALL SCREEN(2)
1120 NEXT I
1130 FOR I=1 TO 500 :: NEXT I
1140 CALL CLEAR
1150 DISPLAY AT(4,1):"YOUR SCORE WAS ";SC
1160 DISPLAY AT(8,1):"PRESS <ENTER> TO PLAY AGAIN"
1170 CALL KEY(0,K,S) :: IF S=0 THEN 1170
1180 IF K=13 THEN RUN ELSE CALL CLEAR :: END
1190 !
1200 M=5 :: W=W-1
1210 WA=WAVE :: IF WA>5 THEN WA=5
1220 FOR I=1 TO M
1230 CITY=INT(RND*7)+1
1240 CALL SPRITE(#I+4,128,15,196+I*12,B(CITY),WA,0)
1250 NEXT I
1260 RETURN
1270 SC=SC+10+WAVE
1280 CALL SOUND(-300,-6,0)
1290 CALL DELSPRITE(#I)
1300 M=M-1 :: RETURN
1310 CALL DELSPRITE(#L)
1320 CALL GCHAR(22,(YY-1)/8,QW) :: IF QW=32 THEN 1340 ELSE IF YY=128 THEN 1350
1330 CITYNUM=CITYNUM-1
1340 CALL HCHAR(22,(YY-1)/8,32,2)
1350 FOR Q=112 TO 120 STEP 4
1360 CALL SOUND(-100,-7,0,Q,0)
1370 CALL SPRITE(#4,Q,9,161,YY-7)
1380 NEXT Q
1390 FOR Q=120 TO 112 STEP-4
1400 CALL SOUND(-100,-7,0,Q,0)
1410 CALL SPRITE(#4,Q,9,161,YY-7)
1420 NEXT Q
1430 CALL DELSPRITE(#4) :: M=M-1
1440 IF YY<>128 THEN 580
1450 MNUM=MNUM-10 :: IF MNUM<0 THEN MNUM=0
1460 DISPLAY AT(23,14)SIZE(2):USING "##":MNUM
1470 GOTO 580
1480 FOR I=1 TO 20
1490 CALL SOUND(-1,500+RND*3000,0)
1500 NEXT I
1510 NEWCITY=NEWCITY-1 :: CITYNUM=CITYNUM+1
1520 QWERT=INT(RND*7)+1
1530 IF QWERT=4 THEN 1520
1540 CALL GCHAR(22,(B(QWERT)-1)/8,QW)
1550 IF QW<>32 THEN 1520
1560 CALL HCHAR(22,(B(QWERT)-1)/8,104) :: CALL HCHAR(22,(B(QWERT)-1)/8+1,105)
1570 GOTO 970
1580 DATA ((((((((((((((((((((((((((((
1590 DATA ((((((((((((((((((((((((((((
1600 DATA ((((((((((((((((((((((((((((
1610 DATA ((((((((((((((((((((((((((((
1620 DATA "(((((,                 *((((("
1630 DATA "((((,                   *((("
1640 DATA ((((  ((((( (   ( (((((  (((
1650 DATA ((((    (   (   ( (      (((
1660 DATA ((((    (   ((((( (((    (((
1670 DATA ((((    (   (   ( (      (((
1680 DATA ((((    (   (   ( (((((  (((
1690 DATA ((((                     (((
1700 DATA ((((                     (((
1710 DATA ((((  ((((( ()  ( (((()  (((
1720 DATA ((((  (     (*) ( (   (  (((
1730 DATA ((((  (((   ( *)( (   (  (((
1740 DATA ((((  (     (  *( (   (  (((
1750 DATA "((((  ((((( (   ( ((((,  ((("
1760 DATA (((()                   +(((
1770 DATA ((((()                 +((((
1780 DATA ((((((((((((((((((((((((((((
1790 DATA ((((((((((((((((((((((((((((
1800 DATA ((((((((((((((((((((((((((((
1810 DATA ((((((((((((((((((((((((((((
